package com.demo.wrapper.utils;

import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 * 数组工具类
 *
 * @author arthur_zhou
 */
public class ArrayUtil {

    private static final String[] EMPTY_ARR = new String[0];

    /**
     * 合并两个数组
     *
     * @param arr1
     * @param arr2
     * @return
     */
    public static String[] mergeArr(String[] arr1, String[] arr2) {
        if (Objects.isNull(arr1)) {
            return Objects.isNull(arr2) ? EMPTY_ARR : arr2;
        }
        if (Objects.isNull(arr2)) {
            return arr1;
        }
        if (arr1.length == 0 && arr2.length == 0) {
            return EMPTY_ARR;
        }
        // 合并两个数组
        String[] newArr = new String[arr1.length + arr2.length];
        System.arraycopy(arr1, 0, newArr, 0, arr1.length);
        System.arraycopy(arr2, 0, newArr, arr1.length, arr2.length);
        return newArr;
    }

    /**
     * 批量添加元素
     *
     * @param list     要添加元素的数组
     * @param element  元素
     * @param elements 更多元素
     * @param <E>
     */
    public static <E> void addAll(List<E> list, E element, E... elements) {
        if (Objects.isNull(list)) {
            return;
        }
        if (Objects.nonNull(element)) {
            list.add(element);
        }
        if (Objects.nonNull(elements) && elements.length > 0) {
            list.addAll(Arrays.asList(elements));
        }
    }

    /**
     * 批量添加元素
     *
     * @param list     要添加元素的数组
     * @param elements 更多元素
     * @param <E>
     */
    public static <E> void addAll(List<E> list, E... elements) {
        if (Objects.isNull(list)) {
            return;
        }
        if (Objects.nonNull(elements) && elements.length > 0) {
            list.addAll(Arrays.asList(elements));
        }
    }
}
